//
//  ViewController.m
//  图片轮播器
//
//  Created by 楼楚 on 15/11/8.
//  Copyright © 2015年 Chu Lou. All rights reserved.
//

#import "ViewController.h"
#define kImageCount 5

@interface ViewController ()<UIScrollViewDelegate>
@property (strong,nonatomic)UIScrollView *scrollView;
@property (strong,nonatomic)UIPageControl *pageControl;
@property (strong,nonatomic)NSTimer *timer;

@end

@implementation ViewController
-(UIScrollView *)scrollView
{
    if (_scrollView == nil) {
        _scrollView = [[UIScrollView alloc]initWithFrame:CGRectMake(10, 20, 300, 130)];
        _scrollView.backgroundColor = [UIColor grayColor];
        
        [self.view addSubview:_scrollView];
//        取消弹簧
        _scrollView.bounces = NO;
//        取消水平滚动条
        _scrollView.showsHorizontalScrollIndicator=NO;
        _scrollView.showsVerticalScrollIndicator = NO;
//        要分页
        _scrollView.pagingEnabled = YES;
//        设置contentSize
        _scrollView.contentSize = CGSizeMake(kImageCount *_scrollView.bounds.size.width, 0);
//        设置代理
        _scrollView.delegate =self;
    }
    return _scrollView;
}
- (UIPageControl *)pageControl
{
    if (_pageControl == nil) {
        //    分页控件 本质上和scrollView没有任何关系，是两个独立的控件
        _pageControl = [[UIPageControl alloc]init];
        
        //    总页数
        _pageControl.numberOfPages = kImageCount;
        //    控件尺寸
        CGSize size = [_pageControl sizeForNumberOfPages:kImageCount];
        
        _pageControl.bounds = CGRectMake(0, 0, size.width, size.height);
        _pageControl.center = CGPointMake(self.view.center.x, 130);
        
        //    设置颜色
        _pageControl.pageIndicatorTintColor = [UIColor redColor];
        _pageControl.currentPageIndicatorTintColor = [UIColor blackColor];
        [self.view addSubview:_pageControl];
        
//       添加监听方法
//        在oc中 绝大多数 “控件”，都可以监听ValueChanged事件，button除外
        [_pageControl addTarget:self action:@selector(pageChanged:) forControlEvents:UIControlEventValueChanged];

    }
    return _pageControl;
}
- (void)pageChanged:(UIPageControl *)page
{
//    根据页数，调整滚动视图中的图片位置 contentOffset
    CGFloat x = page.currentPage *self.scrollView.bounds.size.width;
    [self.scrollView setContentOffset:CGPointMake(x, 0) animated:YES];
}

//视图加载完成调用，通常用来设置数据
- (void)viewDidLoad {
    [super viewDidLoad];

//设置图片
    
    for (int i =0; i<kImageCount; i++) {
        NSString *imageName = [NSString stringWithFormat:@"img_%02d",i + 1];
        UIImage *image = [UIImage imageNamed:imageName];
        UIImageView *imageView = [[UIImageView alloc]initWithFrame:self.scrollView.bounds];
        imageView.image= image;
        [self.scrollView addSubview:imageView];
    }
//    计算imageView的位置
    [self.scrollView.subviews enumerateObjectsUsingBlock:^(UIImageView *imageView, NSUInteger idx, BOOL *  stop) {
        
//        调整x -》origin -》frame
        CGRect frame = imageView.frame;
       frame.origin.x  = idx * frame.size.width;
        imageView.frame = frame;
        
    }];
    
//    NSLog(@"%@",self.scrollView.subviews);
//    分页初始页数为0
    self.pageControl.currentPage = 0 ;
//    启动时钟
    [self startTimer];
    
}
- (void)startTimer
{
    self.timer =[NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(updateTimer) userInfo:nil repeats:YES];
//    添加到运行循环
    [[NSRunLoop currentRunLoop]addTimer:self.timer forMode:NSRunLoopCommonModes];
}

- (void)updateTimer
{
//    页号发生变化
//    （当前的页数 + 1）%总页数
    int page = (self.pageControl.currentPage + 1) % kImageCount;
    self.pageControl.currentPage = page;
//调用监听方法，让视图滚动
    [self pageChanged:self.pageControl];
}
#pragma mark - ScrollView代理方法
//滚动视图停下来，修改页面控件的小点（页数）
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
     NSLog(@"%s",__func__);
//    停下来的当前页数
    NSLog(@"%@",NSStringFromCGPoint(scrollView.contentOffset));
//    计算页数
    int page =scrollView.contentOffset.x / scrollView.bounds.size.width;
    self.pageControl.currentPage = page;
}

/*
 修改时钟所在的运行循环模式后，抓不住图片
 
 解决方法：抓住图片时，停止时钟，松手后，开启时钟
 
 */
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{
//    停止时钟
    [self.timer invalidate];
}
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
{
    [self startTimer];
    
}

@end
